package chapter2.No2_3_volatile关键字.dVolatile非原子的特性;

import java.util.ArrayList;
import java.util.List;

/**
 * 1. volatile作用：同步主内存中最新的值到工作内存
 * volatile出现非线程安全的原因：
 *    从主内存到工作内存经过了6步骤：
 *      read --> load加载 --> use操作 --> assign赋值 --> store --> write
 *      其中：1) read和load阶段：从住内存中复制变量到当前线程工作内存
 *           2) use和assign阶段：执行代码，改变共享变量的值(工作内存)
 *           3) store和write阶段：用工作内存数据刷新主内存对应变量的值
 *
 * @author liujian
 * @version 2016/11/16 0016
 */
public class Main {
    public static void main(String[] args) {
        ServiceClass sc = new ServiceClass();
        List<MyThread> threadList = new ArrayList<MyThread>();
        for (int i = 0; i < 100; i++) {
            threadList.add(new MyThread(sc));
        }
        for (MyThread m : threadList) {
            m.start();
        }
    }
}
